Telegram Group & Telegram Channel
🔰 Модуль enum: обзор

Модуль enum в Python используется для создания перечислений — объектов, которые упрощают работу с группами связанных константных значений. Это полезно для удобного различия значений без привязки к их конкретным значениям, например, при работе с параметрами конфигурации.

🟠 Создание перечислений с Enum и auto

Перечисления позволяют избежать ошибок с опечатками и делают код более читаемым.

Пример с конкретными значениями:
from enum import Enum

class TempUnit(Enum):
CELSIUS = "celsius"
FAHRENHEIT = "fahrenheit"

def get_temperature(city, unit):
return 18.0 if unit == TempUnit.CELSIUS else 64.4

print(get_temperature("Lisbon", TempUnit.CELSIUS)) # 18.0


Перечисления упрощают работу с значениями:
print(TempUnit.CELSIUS.name)  # CELSIUS
print(TempUnit.CELSIUS.value) # celsius


Для целочисленных значений можно использовать auto() для автоматической нумерации:
from enum import Enum, auto

class Weekday(Enum):
SUNDAY = auto()
MONDAY = auto()
TUESDAY = auto()
WEDNESDAY = auto()
THURSDAY = auto()
FRIDAY = auto()
SATURDAY = auto()


🟠 Строковые перечисления

Для строковых значений можно использовать StrEnum:
from enum import StrEnum

class TempUnit(StrEnum):
CELSIUS = "celsius"
FAHRENHEIT = "fahrenheit"

print(TempUnit.CELSIUS.capitalize()) # Celsius


Автоматическая строковая нумерация:
from enum import StrEnum, auto

class TempUnit(StrEnum):
CELSIUS = auto()
FAHRENHEIT = auto()

assert TempUnit.CELSIUS.value == "celsius"


🟠 Специализированные типы перечислений

Целочисленные перечисления с IntEnum:
from enum import IntEnum

class SomeIntegers(IntEnum):
ONE = 1
TWO = 2
THREE = 3

print(SomeIntegers.TWO + 1) # 3


Флаги с Flag для комбинирования флагов:
from enum import Flag, auto

class NotificationMethod(Flag):
IN_APP = auto()
PUSH = auto()
EMAIL = auto()
SMS = auto()

user_settings = NotificationMethod.IN_APP | NotificationMethod.PUSH
print(user_settings) # <NotificationMethod.IN_APP|PUSH: 3>


🟠 Утилиты для удобной работы с перечислениями

Проверка уникальности значений с помощью декоратора @unique:
from enum import Enum, unique

@unique
class EnumWithAliases(Enum):
ONE = 1
TWO = 2
THREE = 3
UNO = 1 # Ошибка, дублирующее значение


Проверка непрерывности значений с помощью декоратора @verify(CONTINUOUS):
from enum import Enum, verify, CONTINUOUS

@verify(CONTINUOUS)
class Nums(Enum):
THREE = 3
FOUR = 4
FIVE = 5
SIX = 6

@verify(CONTINUOUS)
class NumsHole(Enum):
THREE = 3
FOUR = 4
SIX = 6 # Ошибка, отсутствует 5


Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/pyproglib/6684
Create:
Last Update:

🔰 Модуль enum: обзор

Модуль enum в Python используется для создания перечислений — объектов, которые упрощают работу с группами связанных константных значений. Это полезно для удобного различия значений без привязки к их конкретным значениям, например, при работе с параметрами конфигурации.

🟠 Создание перечислений с Enum и auto

Перечисления позволяют избежать ошибок с опечатками и делают код более читаемым.

Пример с конкретными значениями:

from enum import Enum

class TempUnit(Enum):
CELSIUS = "celsius"
FAHRENHEIT = "fahrenheit"

def get_temperature(city, unit):
return 18.0 if unit == TempUnit.CELSIUS else 64.4

print(get_temperature("Lisbon", TempUnit.CELSIUS)) # 18.0


Перечисления упрощают работу с значениями:
print(TempUnit.CELSIUS.name)  # CELSIUS
print(TempUnit.CELSIUS.value) # celsius


Для целочисленных значений можно использовать auto() для автоматической нумерации:
from enum import Enum, auto

class Weekday(Enum):
SUNDAY = auto()
MONDAY = auto()
TUESDAY = auto()
WEDNESDAY = auto()
THURSDAY = auto()
FRIDAY = auto()
SATURDAY = auto()


🟠 Строковые перечисления

Для строковых значений можно использовать StrEnum:
from enum import StrEnum

class TempUnit(StrEnum):
CELSIUS = "celsius"
FAHRENHEIT = "fahrenheit"

print(TempUnit.CELSIUS.capitalize()) # Celsius


Автоматическая строковая нумерация:
from enum import StrEnum, auto

class TempUnit(StrEnum):
CELSIUS = auto()
FAHRENHEIT = auto()

assert TempUnit.CELSIUS.value == "celsius"


🟠 Специализированные типы перечислений

Целочисленные перечисления с IntEnum:
from enum import IntEnum

class SomeIntegers(IntEnum):
ONE = 1
TWO = 2
THREE = 3

print(SomeIntegers.TWO + 1) # 3


Флаги с Flag для комбинирования флагов:
from enum import Flag, auto

class NotificationMethod(Flag):
IN_APP = auto()
PUSH = auto()
EMAIL = auto()
SMS = auto()

user_settings = NotificationMethod.IN_APP | NotificationMethod.PUSH
print(user_settings) # <NotificationMethod.IN_APP|PUSH: 3>


🟠 Утилиты для удобной работы с перечислениями

Проверка уникальности значений с помощью декоратора @unique:
from enum import Enum, unique

@unique
class EnumWithAliases(Enum):
ONE = 1
TWO = 2
THREE = 3
UNO = 1 # Ошибка, дублирующее значение


Проверка непрерывности значений с помощью декоратора @verify(CONTINUOUS):
from enum import Enum, verify, CONTINUOUS

@verify(CONTINUOUS)
class Nums(Enum):
THREE = 3
FOUR = 4
FIVE = 5
SIX = 6

@verify(CONTINUOUS)
class NumsHole(Enum):
THREE = 3
FOUR = 4
SIX = 6 # Ошибка, отсутствует 5


Библиотека питониста #буст

BY Библиотека питониста | Python, Django, Flask


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/pyproglib/6684

View MORE
Open in Telegram


Библиотека питониста | Python Django Flask Telegram | DID YOU KNOW?

Date: |

Telegram hopes to raise $1bn with a convertible bond private placement

The super secure UAE-based Telegram messenger service, developed by Russian-born software icon Pavel Durov, is looking to raise $1bn through a bond placement to a limited number of investors from Russia, Europe, Asia and the Middle East, the Kommersant daily reported citing unnamed sources on February 18, 2021.The issue reportedly comprises exchange bonds that could be converted into equity in the messaging service that is currently 100% owned by Durov and his brother Nikolai.Kommersant reports that the price of the conversion would be at a 10% discount to a potential IPO should it happen within five years.The minimum bond placement is said to be set at $50mn, but could be lowered to $10mn. Five-year bonds could carry an annual coupon of 7-8%.

A Telegram spokesman declined to comment on the bond issue or the amount of the debt the company has due. The spokesman said Telegram’s equipment and bandwidth costs are growing because it has consistently posted more than 40% year-to-year growth in users.

Библиотека питониста | Python Django Flask from sa


Telegram Библиотека питониста | Python, Django, Flask
FROM USA